package org.zoomdev.zoom.lock;

/**
 * 每一个k只能获取一个对象
 *
 * @param <T>
 */
public interface KeyedObjectPool<T> {

    /**
     * 从对象池中获取对象(获取到非null或者失败)
     *
     * @param key
     * @return
     */
    T fetch(String key) throws PoolException;

    /**
     * 获取（如果没有则返回null)
     *
     * @param key
     * @return
     */
    T get(String key);

    /**
     * 释放对象到池
     *
     * @param key
     * @param data
     */
    void release(String key, T data);


    int getUsed();
}
